"Maze Avenger"
By Dale Low
ARCADIAN, 6, no. 11/12 (October 31, 1984): 100.
Documentation by Adam Trionfo
1.0


About "Maze Avenger"
--------------------

Note that the Arcadian newsletter provided no instructions on how to play this 
game.

"Maze Avenger" is a maze game where the player's character creeps ever so 
slowly around the maze shooting objects that are not at all easily 
identifiable.  When the character shoots all of the objects on the screen then 
the player advances to the next level.  The player can be hit by-- well-- 
SOMETHING and it causes the player to be unable to shoot and also to be able to 
pass through walls.


How to load "Maze Avenger"
--------------------------

In AstroBASIC type:

:INPUT

As the tape loads, on the screen will appear:

>PRINT ";STOP";:PRINT %(16
384),1948
;STOP

This is normal.  This is how the program has to be saved, otherwise the load 
ends with "WHAT?" (the STOP command prevents the error).  This format of saving 
does not seem to be compatible with my normal method of archiving a program by 
first clearing the screen and printing the game's title and author.  Therefore, 
the user gets to see the special method that had to be used to be save the game 
to tape so that both the BASIC program and data array would be preserved.

After the game has loaded, type:

RUN

In AstroBASIC many games can be loaded and run at the same time by typing 
:INPUT ; RUN.  This method will NOT work for this game.


Typing and Archiving "Maze Avenger"
-----------------------------------

Of course, "Maze Avenger" has already been typed and can be played right away.  
This additional information is for archival purposes.  It may also be of use in 
the future when archiving a similar program that includes both a BASIC program 
and a data array.

"Maze Avenger" has been one of the most difficult programs to archive properly.  
Dozens of discussion group postings and emails, well over fifty of them, were 
exchanged between several people who worked to get this archived correctly back 
in March of 2011.  These people include Richard Degler, Ken Lill, Paul Thacker, 
Mike White and myself.  Normally archiving a program involves no exchanges of 
emails or postings except to announce that a program is ready to be added to 
BallyAlley.com.

"Maze Avenger" does not work correctly as printed in the Arcadian.  For this 
reason, there are two versions of the program archived.  One version is 
archived as it is printed in the Arcadian.  This version is for archival 
purposes only and should be avoided.  The second version includes fixes made by 
Richard Degler so that the game runs correctly.

The Arcadian provided only a BASIC listing of the program along with the ML 
program data array that is written separately into the Line Input Buffer.  The 
data array listing expects you to load each memory location separately.  This 
turns out to be a lot of typing.  Richard Degler suggested using a short direct 
command to enter the data.  Here is his (slightly modified) command that 
prompts the user for data for all twenty-one memory locations:

FOR A=20237TO A+40STEP 2;PRINT A,;INPUT %(A);NEXT A

Once the data array has been entered, check that it has been entered accurately 
with this direct command:

FOR A=20237TO A+40STEP 2;PRINT A," = ",";PRINT %(A);NEXT A

This command prints the memory location along with the value that the location 
holds.  Remember that you can hit the PAUSE key to pause the listing and then 
GO to continue.

If you want to save the data array separately (for example, if you only type in 
part of the data array and you want to continue later), type:

:PRINT %(20237),21

This will save the twenty-one memory locations (and the extra one byte checksum 
that follows all tape saves).  To load the data array back into the proper 
location, type:

:INPUT %(20237)

This will load the data array beginning at memory location 20237.  The last 
byte of the data array will end in 20277.  Note that address 20279 will hold 
the one byte checksum that was stored on tape.

This commands can each be slightly modified and used to save any data array.

No additional information about what the program does were included in the 
Arcadian, although brief instructions for saving the program were included.  As 
printed, they are:

"After entering the program and the data array PRINT the whole thing to tape 
like this:

:PRINT %(16384),2000

This will save your data [array and program] too."

What the instructions don't mention about saving is that while this method of 
saving the program and data array does work, the user will always get a "WHAT?" 
when the program is loaded from tape.  To avoid this, use this syntax instead:

PRINT ";STOP";:PRINT %(16384),2000

Now when the program is loaded there is no "WHAT?" error, but the adverse 
affect is that the program can't include a title screen.


The Disassembly
---------------

Richard Degler disassembled the machine language portion of "Maze Avenger."  
Normal, this would be of most use to assembly programs, but in this instance 
his disassembly also includes the complete BASIC program, which he commented in 
detail.  If you would like to know more about the program, then his disassembly 
is the place to look.


Was It Worth It?
----------------

Not only was "Maze Avenger" difficult to archive, but the game turns out to be 
crude and without any much fun-factor that I can discern.  The game is B&W, it 
is impossible to tell what the enemies is or what the players is shooting and 
the character moves so slowly that it is painful to clear one level, let alone 
continue to play after that.  Perhaps there is an element of gameplay that I 
don't know about.  If you seem to have found the fun in this game, or if you 
found how to actually PLAY this game and can explain what is happening, then 
please let me know.

Looking back at archiving this game, and accounting for the many hours that it 
took to finally get it right (including the time spent by Richard Degler 
tracking down and fixing the errors and also disassembling the machine language 
routines), was it worth the time?  Sure.  I learned more while archiving this 
Bally/Astrocade program then most any other and I'll be able to use this 
information in the future to archive more exciting software.
